之前打通關實體系列課的 Jim,入手 Classic TDD 無限次播放影音培訓,練習一小段之後的感想。
TDD 就是一種控制開發節奏、隨心所欲控制開發步伐大小的開發方式,以終為始,一樣要有事前的規劃,應對變化,以產出可用的軟體功能為目標,剛剛好的簡單設計(很難啊)
在學習練習的過程中,學會小顆粒度切分需求、功能、情境、任務,是很重要的基本功。因為當你有能力把顆粒度切到極小,且都用工具來輔助產生、重構與巡覽時,你就可以練到接近肌肉反射的動作,這是實務上要作到「又快又好」得經過千錘百鍊的基本功。
關於 TDD 的應用,我總喜歡打個比方:
「在陌生的城市裡開著車,天氣狀況也不太穩定,我們透過導航來幫助我們,先定義好目的地,然後每一段路導航都會告訴你,接下來多久之後應該要轉彎,走錯路時,導航會第一時間提醒你,迴轉、換路線。
路況不好時,慢慢開,天氣好、路況好、路線清楚,就邁開步伐開,有導航在,開錯路第一時間會知道要再放慢速度、暫停一下,看看下一段路該怎麼走。」
心細的你會留意到,「這樣的黑箱角度,根本還沒提到你該怎麼開車」,TDD 如果是從程式碼切入(包含 test code),而不是從需求、使用情境來切入,就完全失去它最大的價值了。
這也是為啥,我一直強調,TDD 不是只有 test-first,test-first 只是順便、順理成章的產物,而不是主要目的或是儀式。
用測試來描述需求、描述使用情境、描述使用產品功能期望發生的結果,這才是在滿足商業需求、解決問題的切入點,也是我們最終目標。
註:【Google表單預購】優惠,只至 7/24 截止。觀望的同學,再不出手,多等幾天就差幾千塊啦。https://hackmd.io/@SYvyb1O4SLq8W6nvAQW5mw/ByVVUt86O